Software specification and generation through pictures is a longstanding and cherished goal in software engineering. This approach generally appeals to software professionals and users, in part because it promises to render the ethereal nature of software creation related activities into a visual exercise.
Some previous attempts to create a visual approach to software engineering have used diagram conventions such as sequence diagrams and flow charts to represent and specify software structures with varying levels of success. Some outstanding issues that may not be adequately addressed include: (1) the diagrammatic conventions bear little or no resemblance to the look and feel of the eventual software delivered; (2) users do not see a progression in realizing functioning software through what will be delivered to them; and (3) software professionals have to visualize and specify the expected behavior using different conventions. These outstanding issues, and others, have historically reduced the practical applicability of diagrams and pictures in software engineering.
Further, most of the available tools for developing and implementing enterprise applications deal with the syntax of the requirements and keep the semantics of behavior very loosely coupled. These do not enforce any translation semantics when the high level specifications are used during different stages of a software development life cycle (SDLC). This leads to a high degree of information leakage at different stages of the software lifecycle development process. Such information leakage results in the development of an application that is not in tune with the high level requirements that were envisaged in the initial stages of the development. This results in costly rework, both in terms of cost and schedule, at later stages of the SDLC. There is a need for having a formal method for capturing the business requirements that ensure strong semantic relationship across the different entities associated with the requirements and the eventual software artifacts implementing the same.